kind of done. there is a mssql ML session, but not relevant right now

This commit is contained in:
Bartal Læarsson
2026-02-17 13:39:00 +00:00
parent 72176b2be0
commit c0237a4314
9 changed files with 295 additions and 18 deletions
+42
View File
@@ -0,0 +1,42 @@
import pyodbc
try:
connection = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER=.;DATABASE=SampleDB;Trusted_Connection=yes')
cursor = connection.cursor()
create_table="""
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[tbl_customers_from_csv_bulk_insert]') AND type in (N'U'))
begin
create table [dbo].[tbl_customers_from_csv_bulk_insert](
id int not null,
code varchar(50) null,
first_name varchar(50) null,
last_name varchar(50) null,
)
end;
"""
cursor.execute(create_table)
connection.commit()
bulk_insert_cmd="""
bulk insert tbl_customers_from_csv_bulk_insert
from 'C:\\Users\\bl.SEV\\repos\\python-mssql\\advanced-topics\\csv\\sample-csv-file-for-bulk-insert-demo.csv'
with
(
fieldterminator = ';',
rowterminator = '\n'
);
"""
cursor.execute(bulk_insert_cmd)
connection.commit()
cursor.close()
connection.close()
except pyodbc.Error as ex:
print()
print("exception: ",ex)
cursor.close()
connection.close()
print()
exit()
@@ -0,0 +1,41 @@
import subprocess
import os
sql_instance = "."
sql_database = "master"
folder_to_check = "./sql_scripts/"
def run_ps_command(cmd):
# Build the PowerShell invocation list
command = [
"PowerShell",
"-ExecutionPolicy", "Unrestricted",
"-Command", cmd
]
result = subprocess.run(
command,
capture_output=True,
text=True
)
return result
for file in os.listdir(folder_to_check):
if file.endswith(".sql"):
full_path = os.path.join(folder_to_check, file)
print(f"executing .sql file: {full_path}")
sql_command = (
f"Invoke-Sqlcmd -ServerInstance {sql_instance} "
f"-Database {sql_database} -InputFile \"{full_path}\""
)
result = run_ps_command(sql_command)
if result.returncode != 0:
print("Error executing script:")
print(result.stderr.strip())
else:
if result.stdout:
print("Output:")
print(result.stdout.strip())
+27 -5
View File
@@ -1,18 +1,33 @@
import tkinter
import pyodbc
import csv
try:
sql_server_ver = "Not Available"
root = tkinter.Tk()
root.geometry("600x400")
root.title("Sample Python GUI App")
label_hello_world = tkinter.Label(root, text=str(sql_server_ver), fg="red")
def sql_server_version():
try:
connection = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER=.;DATABASE=SampleDB;Trusted_Connection=yes')
cursor = connection.cursor()
cursor.execute("select @@VERSION as version")
while 1:
row = cursor.fetchone()
if not row:
break
sql_server_ver = row.version
cursor.close()
connection.close()
except pyodbc.Error as ex:
except pyodbc.Error as ex:
print()
print("exception: ",ex)
cursor.close()
@@ -20,4 +35,11 @@ except pyodbc.Error as ex:
print()
exit()
print()
label_hello_world.config(text=str(sql_server_ver))
label_hello_world.pack()
btn_sql_server_version = tkinter.Button(root, command=sql_server_version, text="Retrieve SQL Server Version")
btn_sql_server_version.pack(side=tkinter.TOP, pady=50)
root.mainloop()
@@ -0,0 +1,5 @@
1;customer1;fistName1;lastName1
2;customer2;fistName2;lastName2
3;customer3;fistName3;lastName3
4;customer4;fistName4;lastName4
5;customer5;fistName5;lastName5
1 1 customer1 fistName1 lastName1
2 2 customer2 fistName2 lastName2
3 3 customer3 fistName3 lastName3
4 4 customer4 fistName4 lastName4
5 5 customer5 fistName5 lastName5
@@ -0,0 +1,23 @@
/*
* Created for the online course on Udemy: "Working with Python® on Windows® and SQL Server® Databases"
*
* Course URL:
* https://www.udemy.com/course/python-windows-sql-server
*
* Author/Instructor: Artemakis Artemiou
*
* Disclaimer: This SQL script which is part of the online course on Udemy "Working with Python® on Windows®
* and SQL Server® Databasess", is intended to be used only for demo purposes. Do not
* use it for Production systems as it is simplified for demo purposes.
*/
create database SampleDB2022_1a;
go
use SampleDB2022_1a;
go
create table tblSample1a(
id int,
code varchar(50));
go
@@ -0,0 +1,27 @@
/*
* Created for the online course on Udemy: "Working with Python® on Windows® and SQL Server® Databases"
*
* Course URL:
* https://www.udemy.com/course/python-windows-sql-server
*
* Author/Instructor: Artemakis Artemiou
*
* Disclaimer: This SQL script which is part of the online course on Udemy "Working with Python® on Windows®
* and SQL Server® Databasess", is intended to be used only for demo purposes. Do not
* use it for Production systems as it is simplified for demo purposes.
*/
use SampleDB2022_1a;
go
insert into tblSample1a
values (1,'test1'), (2,'test2');
create table tblSample1b(
id int,
code varchar(50));
go
insert into tblSample1b
values (1,'test1'), (2,'test2');
go
@@ -0,0 +1,27 @@
/*
* Created for the online course on Udemy: "Working with Python® on Windows® and SQL Server® Databases"
*
* Course URL:
* https://www.udemy.com/course/python-windows-sql-server
*
* Author/Instructor: Artemakis Artemiou
*
* Disclaimer: This SQL script which is part of the online course on Udemy "Working with Python® on Windows®
* and SQL Server® Databasess", is intended to be used only for demo purposes. Do not
* use it for Production systems as it is simplified for demo purposes.
*/
create database SampleDB2022_1b;
go
use SampleDB2022_1b;
go
create table tblSample1a(
id int,
code varchar(50));
create table tblSample1b(
id int,
code varchar(50));
go
+3
View File
@@ -1 +1,4 @@
pyodbc
langchain
langchain-mcp-adapters
aiohttp
+87
View File
@@ -0,0 +1,87 @@
------------------------------------------------------
-- 1. Solutions to common issues
------------------------------------------------------
-- Resolving the "Divide by zero" error (by example)
DECLARE @denominator INT
SET @denominator = 0
--SELECT 1 / 0
SELECT 1 / ISNULL(NULLIF(@denominator, 0), 1)
------------------------------------------------------
--Handling the error “The conversion of a char data type to a datetime data
--type resulted in an out-of-range datetime value”
--Change the default language to “us_english” for the given SQL Server login:
USE [master];
ALTER LOGIN "LOGIN_NAME" WITH DEFAULT_LANGUAGE = us_english;
--Best practice: Always use the ISO date format in your data applications/T-SQL scripts: YYYY-MM-DD
------------------------------------------------------
--Handling the error “Database [Database_Name] cannot be upgraded because it is read-only
--or has read-only files”
--Make sure that the user account on which the SQL Server instance database engine is
--running has full access to the database files.
------------------------------------------------------
-- 2. Basic String Functions
------------------------------------------------------
-- Returns @length characters from @expression starting from @start_index
SELECT SUBSTRING(@expression, @start_index, @length)
SELECT SUBSTRING('This is a Test', 1, 4)
-- Finds the given @pattern in the @string and replaces it with the @replacement_string
SELECT REPLACE(@string, @pattern, @replacement_string)
SELECT REPLACE('This is a Test', 'Test', 'New Test')
-- Returns the size of @string in terms of number of characters
SELECT LEN(@string)
SELECT LEN('This is a Test')
-- Returns the first @num_chars characters of the @string counting from the left
SELECT LEFT(@string, @num_chars)
SELECT LEFT('This is a Test',4)
-- Returns the first @num_chars characters of the @string counting from the right
SELECT RIGHT(@string, @num_chars)
SELECT RIGHT('This is a Test',4)
-- Removes the leading blank spaces
SELECT LTRIM(@expression)
SELECT LTRIM(' This is a Test')
-- Removes the trailing blank spaces
SELECT RTRIM(@expression)
SELECT RTRIM('This is a Test ')
------------------------------------------------------
-- 3. Performance-Related Tips
------------------------------------------------------
-- Avoiding locking when reading data (however, dirty reads are allowed)
-- You need to take into consideration, possible dirty-read issues when using this approach
SELECT [columnName]
FROM [tableName] WITH (NOLOCK)
------------------------------------------------------
-- Rebuild a specific index with using parameters
USE [DATABASE_NAME];
ALTER INDEX [INDEX_NAME] ON [SCHEMA.TABLE]
REBUILD WITH (FILLFACTOR=[FILL_FACTOR_VALUE_BETWEEN_0_100], ONLINE=[ON|OFF]);
-- Rebuild all indexes in a table with using parameters
USE [DATABASE_NAME];
ALTER INDEX ALL ON [SCHEMA.TABLE]
REBUILD WITH (FILLFACTOR=[FILL_FACTOR_VALUE_BETWEEN_0_100], ONLINE=[ON|OFF]);
------------------------------------------------------
-- Updating database tables without causing blocking
-- You need to take into consideration, possible dirty-read issues when using this approach
UPDATE [TABLE_NAME] WITH (READPAST)
SET
WHERE
------------------------------------------------------
-- 4. Maintenance-Related Tips
------------------------------------------------------
-- Truncating a data/log file
USE [DBName];
DBCC SHRINKFILE ([Data_Log_LogicalName],TRUNCATEONLY);
-- Renaming a Windows login
ALTER LOGIN "[Domain or Server Name]\[Windows Username]"
WITH NAME="[New Domain or New Server Name]\[Windows Username]";
-- Renaming a SQL Server login
ALTER LOGIN "[SQL Server Login Name]"
WITH NAME="[New SQL Server Login Name]";
-- Creating Logins for orphaned SQL Server users
USE [DBName];
EXEC sp_change_users_login 'Auto_Fix', '[UserName]', NULL, '[Password]';
-- Changing the Database Owner in a SQL Server Database (SQL Login)
USE [DBName];
EXEC sp_changedbowner '[SQL_Login_Name]';
-- Changing the Database Owner in a SQL Server Database (Windows Login)
USE [DBName];
EXEC sp_changedbowner '[DomainNameUserName]'